package geekstudy.week7;

/**
 *
 * 918. 环形子数组的最大和
 * https://leetcode-cn.com/problems/maximum-sum-circular-subarray/submissions/
 *
 *
 * 执行结果： 通过 显示详情
 *
 * 添加备注
 * 执行用时：6 ms, 在所有 Java 提交中击败了41.86% 的用户
 * 内存消耗：44.4 MB, 在所有 Java 提交中击败了59.03% 的用户
 *
 */
public class Week7MaximumSumCircularSubarray {

    public int maxSubarraySumCircular(int[] nums) {
        if(nums == null || nums.length == 0) {
            return 0;
        }
        int tempMin = nums[0];
        int tempMax = nums[0];
        int sum = nums[0];
        int min = nums[0];
        int max = nums[0];
        for(int size = 1; size < nums.length; size++) {
            sum += nums[size];
            tempMax = Math.max(tempMax + nums[size], nums[size]);
            tempMin = Math.min(tempMin + nums[size], nums[size]);
            max = Math.max(max, tempMax);
            min = Math.min(min, tempMin);
        }
        return max < 0 ? max : Math.max(max, sum - min);
    }
}
